home *** CD-ROM | disk | FTP | other *** search
/ TPUG - Toronto PET Users Group / TPUG Users Group CD / TPUG Users Group CD.iso / CRS / crs66.d81 / orbitmp.prg (.txt) < prev    next >
GEOS ConVerT  |  2009-10-10  |  3KB  |  78 lines

  1. ORBitmapUp
  2. PRG formatted GEOS file V1.0
  3. Epson MX-80
  4. COLORUTILS
  5. BLASTER'S CONVERTER V2.5
  6. LF.POEM
  7. LFP.SEA
  8. Write Image V2.0
  9. geoWrite    V2.1
  10. ;ORBitmapUp performs a BitmapUp-type operation, but instead of overwriting the forground screen, it
  11. ;merges the new bitmap with whatever is currently on the foreground screen.
  12. ;ORBitmapUp takes the same parameters as the normal BitmapUp, but for proper operation R1H should be
  13. ;on a card boundry (which means it should be a multiple of 8).  ALL registers are preserved, and that
  14. ;means R0-R15, A0-A15, a,x,y.
  15. ;NOTE!  ORBitmapUp REQUIRES that the file 'rsave.rel' be linked in along with 'ORBitmapUp.rel'!!
  16. ;AUTHOR: Kent L. Smotherman, July 1992 (Kent LS on Q-Link)
  17.     .noeqin
  18.     .noglbl
  19.     .if    Pass1
  20.     .include    geosSym
  21.     .include    geosMac
  22.     .endif
  23.     .eqin
  24.     .glbl
  25. ORBitmapUp:    jsr    saveall    ;rsave.rel rout
  26.     .noeqin
  27.     .noglbl
  28.     .if    Pass1
  29.     .include    geosSym
  30.     .include    geosMac
  31.     .endif
  32.     .eqin
  33.     .glbl
  34. ORBitmapUp:    jsr    saveall    ;rsave.rel routine
  35.     lda    dispBuff    ;remember
  36.     LoadB    dispBuff,#ST_WR_BACK    ;bring in bitmap to background
  37.     jsr    BitmapUp
  38.     LoadB    dispBuff,#ST_WR_FORE | ST_WR_BACK ;need this for GetScanLine!
  39.     ldx    r0save+3    ;really r1H
  40.     jsr    GetScanLine    ;address screen ram
  41.     lda    r0save+2    ;really r1L
  42.     asl    a    ;convert byte to pixel
  43.     asl    a    ;-by multiplying by 8
  44.     asl    a    ;-(which is the same as 3 shift lefts)
  45.     pha        ;remember
  46.     adc    r5L    ;add in forground screen address for top of bitmap
  47.     sta    r5L    ;=
  48.     lda    r5H    ;=
  49.     adc    #0    ;=
  50.     sta    r5H    ;=
  51.     pla        ;recall
  52.     adc    r6L    ;do the same for background screen address
  53.     sta    r6L    ;=
  54.     lda    r6H    ;=
  55.     adc    #0    ;=
  56.     sta    r6H    ;=
  57.     lda    r0save+5    ;reall r2H
  58.     lsr    a    ;convert bitmap height to bytes
  59.     lsr    a    ;by dividing by 8
  60.     lsr    a    ;(save as 3 right shifts)
  61.     sta    r2H
  62. 2$:    ldy    #0
  63.     MoveB    r0save+4,r2L
  64. 1$:    ldx    #8
  65. 0$:    lda    (r5),y
  66.     ora    (r6),y    ;OR the background into the foreground
  67.     sta    (r5),y
  68.     bne    0$    ;do one card at a time
  69.     dec    r2L
  70.     bne    1$    ;for the defined width of the bitmap
  71.     AddVW    #320,r5    ;next card address in forground
  72.     AddVW    #320,r6    ;next card address in background
  73.     dec    r2H
  74.     bne    2$    ;do for defined BYTE height of bitmap
  75.     pla        ;restore dispBuff
  76.     sta    dispBuff
  77.     jmp    loadall    ;restore all regs and return via RTS in loadall
  78.